home *** CD-ROM | disk | FTP | other *** search
- INTRO_FFIO(3F) Last changed: 3-11-98
-
-
- NNAAMMEE
- IINNTTRROO__FFFFIIOO - Describes performance options available with the FFIO
- layers
-
- IIMMPPLLEEMMEENNTTAATTIIOONN
- See individual man pages for implementation details.
-
- DDEESSCCRRIIPPTTIIOONN
- The Flexible File I/O (FFIO) system lets the user specify a comma-
- separated list of layers through which I/O data is to be passed. This
- is done by providing a value for the _s_p_e_c argument to the --FF option on
- the aassssiiggnn(1) command. This specifies a _c_l_a_s_s of processing to be
- done on the data.
-
- The following C routines are used with FFIO:
-
- * ffffffccnnttll(3C): performs functions on files opened using FFIO
-
- * fffflliissttiioo(3C): initiates a list of I/O requests using FFIO
-
- * ffffiioolloocckk(3C): locks and unlocks function calls
-
- * ffffooppeenn(3C): opens or closes a file using FFIO
-
- * ffffppooss(3C): positions files opened using FFIO
-
- * ffffrreeaadd(3C): reads from a file using FFIO
-
- * ffffrreeaaddaa(3C): provides asynchronous read using FFIO
-
- * ffffsseeeekk(3C): repositions a FFIO file
-
- * ffffwwrriitteeaa(3C): provides asynchronous write using FFIO
-
- * ffffsseettsspp(3C): initiates EOV processing for files opened using FFIO
-
- * ffffwwrriittee(3C): writes to a file using FFIO
-
- FFFFIIOO oonn IIRRIIXX ssyysstteemmss
- On IRIX systems, the FFIO library calls aaiioo__ssggii__iinniitt the first time it
- issues an asynchronous I/O call. It passes the following parameters
- to aaiioo__ssggii__iinniitt:
-
- aio_numusers=MAX(64,sysconf(_SC_NPROC_CONF))
- aio_threads=5
- aio_locks=3
-
- If a program is using multiple threads and asychronous I/O, it is
- important that the value of aaiioo__nnuummuusseerrss be at least as large as the
- number of sprocs and pthreads that the application contains. For more
- information, see the aaiioo__ssggii__iinniitt man page on IRIX systems.
-
- Users can change these values by setting the following environment
- variables to the desired value:
-
- * change FFFF__IIOO__AAIIOO__TTHHRREEAADDSS to modify aaiioo__tthhrreeaaddss
-
- * change FFFF__IIOO__AAIIOO__LLOOCCKKSS to modify aaiioo__lloocckkss
-
- * change FFFF__IIOO__AAIIOO__NNUUMMUUSSEERRSS to modify aaiioo__nnuummuusseerrss
-
- The following example causes aaiioo__tthhrreeaaddss to be set to 8 when the FFIO
- routines call aaiioo__ssggii__iinniitt:
-
- setenv FF_IO_AIO_THREADS 8
-
- Users can also supersede the FFIO library's call to aaiioo__ssggii__iinniitt by
- calling it themselves, before the first I/O statement in their
- program.
-
- The following layers can issue asynchronous I/O calls on IRIX systems:
-
- * ccooss: see the later description on this man page for a description of
- how the ccooss layer uses asynchronous I/O.
-
- * ccaacchheeaa and bbuuffaa: users should assume that these layers may issue
- asynchronous I/O calls.
-
- * ssyysstteemm or ssyyssccaallll: these layers may issue asynchronous I/O calls if
- called from a BBUUFFFFEERR IINN or BBUUFFFFEERR OOUUTT statement, or from the ccooss or
- ccaacchheeaa layer. The ssyysstteemm and ssyyssccaallll layer may also issue
- asynchronous I/O calls if called via ffffrreeaaddaa(3C), ffffwwrriitteeaa(3C), or
- fffflliissttiioo(3C) (all deferred on IRIX systems).
-
- SSppeecciiffyyiinngg FFFFIIOO LLaayyeerrss
- The _s_p_e_c argument of the --FF option of the aassssiiggnn(1) command comprises
- a list of layers or filters that are used to manipulate the data file
- as it is being read or written. The available layers include
- performance options (such as memory-resident and SDS-resident files)
- and the capability to read and write files in a variety of different
- vendors' blocking formats. Each layer _s_p_e_c is of the general form:
-
- _c_l_a_s_s[._t_y_p_e[._s_u_b_t_y_p_e]][:_n_u_m_1]:[_n_u_m_2]:[_n_u_m_3]]
-
- Many of the layers also allow you to specify the numeric parameters
- with a keyword. On UNICOS and UNICOS/mk systems, this requires that
- your application be linked with Cray Research's CrayLibs 3.0 or later
- releases. The format for these specifications is given in the
- description of each layer where the specification is available.
-
- Selected layers are available on IRIX systems. The available
- platforms are detailed in each layer's description.
-
- For more information about FFIO, see the _A_p_p_l_i_c_a_t_i_o_n _P_r_o_g_r_a_m_m_e_r'_s _I/_O
- _G_u_i_d_e, publication SG-2168.
-
- The _s_p_e_c argument can have the following values:
-
- CCllaassss EExxppllaannaattiioonn
-
- bbllaannkkxx or bbllxx
- Blank compression filter. This layer is used as a
- filter to compress or decompress blanks in character
- data.
-
- Not available on IRIX systems.
-
- _t_y_p_e can be one of the following:
-
- ccooss COS-style blank compression (bbllxxcchhrr=27 or Ox10)
-
- ccttssss CTSS-style blank compression (bbllxxcchhrr=48 or 0x30)
-
- cc220055 CYBER 205-style blank compression (bbllxxcchhrr=48 or
- 0x30)
-
- _n_u_m_1 is the decimal value of the ASCII character used as
- the escape code to control the blank compression
- (usually EESSCC or 27). _n_u_m_2 is the decimal value of the
- ASCII character that is the object of the compression
- (usually BBLLAANNKK or 32).
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- bbllxx[[.._t_y_p_e]][[..bbllxxcchhrr==_n_u_m_1]][[..bbllnnkk==_n_u_m_2]]
-
- bbllaannkkxx[[.._t_y_p_e]][[..bbllxxcchhrr==_n_u_m_1]][[..bbllnnkk==_n_u_m_2]]
-
- bbmmxx Tape I/O. Each logical record requested is a physical
- tape block.
-
- Deferred implementation on IRIX systems.
-
- The _n_u_m_1 field represents the size of each buffer, in
- 4096-byte blocks. The _n_u_m_2 field represents the number
- of buffers.
-
- On UNICOS systems, files on ER90 volumes that have been
- mounted in blocked mode may use this layer (see the _T_a_p_e
- _S_u_b_s_y_s_t_e_m _U_s_e_r'_s _G_u_i_d_e, publication SG-2051, for
- information about restrictions on record sizes when
- using ER90 block mode).
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- bbmmxx[[..bbuuffssiizzee==_n_u_m_1]][[..nnuumm__bbuuffffeerrss==_n_u_m_2]]
-
- bbuuffaa Asynchronous buffering layer.
-
- Available on IRIX systems.
-
- The bbuuffaa layer provides asynchronous buffering. It
- allows efficient sequential-access I/O.
-
- The _n_u_m_1 field represents the size in 4096-byte blocks
- of each buffer. The maximum value for _n_u_m_1 on IRIX
- systems is 32,767. The maximum allowed value on UNICOS
- and UNICOS/mk systems is 1,073,741,823 (you may not be
- able to use a value of this size because that amount of
- memory may not be available).
-
- The _n_u_m_2 field selects the number of buffers to be used.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- bbuuffaa[[..bbuuffssiizzee==_n_u_m_1]][[..nnuumm__bbuuffffeerrss==_n_u_m_2]]
-
- cc220055 CDC CYBER 205/ETA records.
-
- Not available on IRIX systems.
-
- The CYBER 205-type W record can be selected by
- specifying cc220055..ww. The _n_u_m_1 field is not permitted.
- The _n_u_m_2 field represents the size of the working
- buffer, in bytes, used in record blocking. If any
- logical records written exceed this size, a major
- performance penalty can result.
-
- The _t_y_p_e field should be specified as ww. The best
- performance is currently obtained when _n_u_m_2 is greater
- than the largest record to be processed plus 16 bytes.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- cc220055[[..ww]][[..bbuuffssiizzee==_n_u_m_2]]
-
- ccaacchhee Cached file. The ccaacchhee layer allows efficient
- random-access I/O, even when file access is clustered in
- several regions of a file.
-
- Available on IRIX systems.
-
- During reads and writes to the layer, cache buffers
- frequently must be preempted. The buffer chosen for
- preemption is always the least recently accessed buffer
- at the time of preemption.
-
- The options available are ..mmeemm, which specifies that
- buffers reside in memory or ..ssddss, which specifies that
- buffers reside in the SDS. (..ssddss is not supported on
- CRAY T3E systems or IRIX systems). Memory-resident
- buffers are the default.
-
- The numeric fields are as follows:
-
- * _n_u_m_1 is the size in 4096-byte blocks of each cache
- page. The maximum value for _n_u_m_1 on IRIX systems is
- 32,767. The maximum allowed value on UNICOS and
- UNICOS/mk systems is 1,073,741,823 (you may not be
- able to use a value of this size because that amount
- of memory may not be available).
-
- * _n_u_m_2 selects the number of cache pages to be used.
-
- * _n_u_m_3 is the size in 4096-byte blocks at which the
- ccaacchhee layer attempts to bypass ccaacchhee layer buffering.
- If a user's I/O request is larger than _n_u_m_3, the
- request might not be copied to a cache page. The
- default on IRIX systems is _n_u_m_3=_n_u_m_1. The default on
- UNICOS and UNICOS/mk systems is _n_u_m_3=_n_u_m_1*_n_u_m_2.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- ccaacchhee[[.._t_y_p_e]][[..ppaaggee__ssiizzee==_n_u_m_1]][[..nnuumm__ppaaggeess==_n_u_m_2]]
- [[..bbyyppaassss__ssiizzee==_n_u_m_3]]
-
- ccaacchheeaa Asynchronously cached file.
-
- Available on IRIX systems.
-
- This type of processing usually performs well whenever
- the ccaacchhee layer might be used. In addition, any
- sequential forward and sequential backward access
- through the file is detected. When sequential access
- patterns are detected while reading, asynchronous
- read-ahead is performed provided that the numbers of
- pages to read ahead has been specified. When writing,
- selective asynchronous write-behind is performed.
-
- The values for _t_y_p_e are ..mmeemm, which specifies that
- buffers reside in memory, or ..ssddss, which specifies that
- buffers reside in the SDS (..ssddss is not supported on
- CRAY T3E systems or on IRIX systems). Memory-resident
- buffers are the default.
-
- The numeric fields are as follows:
-
- * _n_u_m_1 is the size in 4096-byte blocks of each cache
- page. The maximum value for _n_u_m_1 on IRIX systems is
- 32,767. The maximum allowed value on UNICOS and
- UNICOS/mk systems is 1,073,741,823 (you may not be
- able to use a value of this size because that amount
- of memory may not be available).
-
- * _n_u_m_2 selects the number of cache pages to be used.
-
- * _n_u_m_3 selects the number of pages to read ahead
- asynchronously. The default is 0.
-
- * _n_u_m_4 selects a shared cache number in the range of 1
- to 15. If _n_u_m_4 is 0, a private cache is indicated.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- ccaacchheeaa[[.._t_y_p_e]][[..ppaaggee__ssiizzee==_n_u_m_1]][[..nnuumm__ppaaggeess==_n_u_m_2]]
- [[..mmaaxx__lleeaadd==_n_u_m_3]][[..sshhaarreedd__ccaacchhee==_n_u_m_4]]
-
- On IRIX systems, stacked shared ccaacchheeaa layers are not
- supported.
-
- On UNICOS and UNICOS/mk systems, stacked shared ccaacchheeaa
- layers are supported, but in multitasked programs,
- different files must not mix the order of the shared
- caches.
-
- Examples:
-
- The following specifications ccaannnnoott both be used by a
- multitasked program:
-
- * aassssiiggnn --FF ccaacchheeaa::::::::11,,ccaacchheeaa::::::::22 uu::11
-
- * aassssiiggnn --FF ccaacchheeaa::::::::22,,ccaacchheeaa::::::::11 uu::22
-
- The following specifications ccaann both be used by a
- multitasked program on a UNICOS system:
-
- * aassssiiggnn --FF ccaacchheeaa::::::::11,,ccaacchheeaa::::::::22 uu::11
-
- * aassssiiggnn --FF ccaacchheeaa::::::::11,,ccaacchheeaa::::::::22 uu::22
-
- ccddcc CDC 60-bit format _t_y_p_e.
-
- Not available on IRIX systems.
-
- No numeric fields are accepted.
-
- The supported values for _t_y_p_e are as follows:
-
- _t_y_p_e FFoorrmmaatt
-
- iiww I-type blocks, W-type records
-
- ccww C-type blocks, W-type records
-
- ccss C-type blocks, S-type records
-
- cczz C-type blocks, Z-type records
-
- The _s_u_b_t_y_p_e field accepts one of the following values
- that indicate the presence of block trailers and other
- low-level characteristics:
-
- _s_u_b_t_y_p_e VVaalluuee
-
- ddiisskk Disk type structure, for use with station
- transfers of CYBER datasets
-
- ii NOS internal tape format
-
- ssii System internal or SCOPE internal tape format
-
- ccooss or bblloocckkeedd
- COS blocking.
-
- Available on IRIX systems.
-
- If specified, _t_y_p_e must be one of the following:
-
- _t_y_p_e AAccttiioonn
-
- ssyynncc Uses a single buffer in the blocking and
- deblocking process. I/O is done strictly
- synchronously.
-
- aassyynncc Divides the buffer into two parts and uses
- asynchronous I/O to transfer the blocked data
- between the buffer(s) and the logical device.
- When reading, asynchronous read-ahead is
- performed, and when writing, asynchronous
- write-behind is performed. To effectively
- use aassyynncc, the buffer size should be at least
- twice the record length.
-
- aauuttoo Default (if _t_y_p_e is not specified). Chooses
- either synchronous or asynchronous behavior
- depending on the buffer size. If the buffer
- size is less than 64 blocks, synchronous
- behavior is selected. If it is greater than
- or equal to 64 blocks, asynchronous behavior
- is selected.
-
- For _n_u_m_1, enter the desired buffer size in 4096-byte
- blocks (for example, --FF ccooss::4422 requests COS blocking and
- a 42-block buffer). The _n_u_m_1 value also determines the
- record size for underlying layers which perform record
- blocking. The underlying record size is _n_u_m_1 blocks if
- in synchronous mode and _n_u_m_1/2 or _n_u_m_1/2+1 blocks if in
- asynchronous mode. For an underlying tape layer, the
- record size is the tape block size.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- ccooss[[.._t_y_p_e]][[..bbuuffssiizzee==_n_u_m_1]]
-
- eerr9900 ER90 I/O.
-
- Not available on IRIX systems or on CRAY T3E systems.
-
- Each I/O operation results in a corresponding system
- call. Adjacent records are not delimited from one
- another. No subfields are accepted. The byte-stream
- mode of the device must be used. See ttppmmnntt(1).
-
- eevveenntt I/O layer monitoring.
-
- Available on Cray PVP systems and CRAY T3E systems.
- Deferred implementation on IRIX systems.
-
- The eevveenntt layer monitors I/O occurring between two
- layers on a per-file basis. This layer generates
- statistics in an ASCII log file; users can specify what
- type of report is generated. The eevveenntt layer is enabled
- by default. Users do not have to relink their programs
- to study I/O performance. To generate information,
- rerun the program with the eevveenntt layer specified on the
- aassssiiggnn command.
-
- Statistics are reported to ssttddeerrrr by default. The
- FFFF__IIOO__LLOOGGFFIILLEE environment variable can be used to name a
- file to which statistics are written by the eevveenntt layer.
- The default action is to overwrite the existing file.
- To append information to an existing file, specify a
- plus sign (++) before the file name.
-
- On CRAY T3E systems, if more than one process is using
- the eevveenntt layer, and you set the FFFF__IIOO__LLOOGGFFIILLEE
- environment variable, you must use the plus sign (++)
- before the file name to prevent _p_r_o_c_e_s_s _a from
- overwriting the information written by _p_r_o_c_e_s_s _b. Using
- the plus sign also means that the information will be
- appended to an existing file.
-
- On CRAY T3E systems you can also use the FFFF__IIOO__LLOOGGFFIILLEEPPEE
- environment variable to name a file to which statistics
- are written. The file name will be _x._n, where _x is the
- name specified by the environment variable and _n is the
- number of the PE which wrote the file. The default
- action is to overwrite the existing file. To append
- information to the existing file, specify a plus sign
- (++) before the file name.
-
- Enter one of the following for _t_y_p_e:
-
- vvaalluuee IInnffoorrmmaattiioonn rreeppoorrtteedd
-
- nnoossttaatt No statistical information is reported.
-
- ssuummmmaarryy Information on event types that occur at
- least once are reported.
-
- bbrriieeff A one-line summary for layer activities
- is reported.
-
- ff7777 FORTRAN 77/UNIX Fortran record blocking. This is the
- common blocking format used by most FORTRAN 77 compilers
- on UNIX systems.
-
- Available on IRIX systems.
-
- Enter one of the following for _t_y_p_e:
-
- _t_y_p_e FFoorrmmaatt
-
- nnoonnvvaaxx Default. Control words in a format common to
- machines such as the MC68000.
-
- vvaaxx VAX format (byte-swapped) control words. Not
- available on IRIX systems.
-
- The specification of vvaaxx or nnoonnvvaaxx is not
- relevant to data conversion.
-
- For _n_u_m_1, enter the maximum record size in bytes. For
- _n_u_m_2, enter the working buffer size, in bytes.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- ff7777[[.._t_y_p_e]][[..rreeccssiizzee==_n_u_m_1]][[..bbuuffssiizzee==_n_u_m_2]]
-
- ffdd Connect to a specific file descriptor.
-
- Available on IRIX systems.
-
- Field _n_u_m_1 is the decimal value of the file descriptor.
- Classes named ssttddiinn, ssttddoouutt, and ssttddeerrrr exist as
- alternate names for ffdd::00, ffdd::11, and ffdd::22.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- ffdd[[..ffiillee__ddeessccrriippttoorr==_n_u_m_1]]
-
- gglloobbaall File global to all PEs.
-
- Available on IRIX systems.
-
- This is a caching layer which distributes the cache
- across multiple SHMEM or MPI processes. Open and close
- operations are collective (require participation by all
- processes which access the file). All other operations
- are independently performed by one or more processes.
- The library allows multiple processes to concurrently
- access the file while maintaining coherency of buffered
- data.
-
- Specify one of the following options for _t_y_p_e:
-
- _t_y_p_e DDeessccrriippttiioonn
-
- pprriivvppooss Default. The file position is private to
- a process. All processes may seek to
- independent locations in the file.
-
- gglloobbppooss (Deferred). The file position is global
- to all processes. A seek or I/O
- operation by any process will affect the
- position for all processes.
-
- The numeric fields are as follows:
-
- _n_u_m_1 The size in 4096-byte blocks of each cache page.
-
- _n_u_m_2 Selects the number of cache pages to be used on
- each process. If there are _n processes, then _n *
- _n_u_m_2 cache pages are used.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- gglloobbaall[[.._t_y_p_e]][[..ppaaggee__ssiizzee==_n_u_m_1]][[..nnuumm__ppaaggeess==_n_u_m_2]]
-
- iibbmm Record blocking for common record types on IBM operating
- systems.
-
- Deferred implementation on IRIX systems.
-
- Specify one of the following record formats for _t_y_p_e:
-
- _t_y_p_e FFoorrmmaatt
-
- ff Fixed-length record format. For _n_u_m_1, enter the
- logical record size in 8-bit bytes. For _n_u_m_2,
- enter the maximum physical block size in 8-bit
- bytes; if specified, _n_u_m_2 must be equal to _n_u_m_1.
-
- ffbb Fixed-length, blocked record format. For _n_u_m_1,
- enter the logical record size in 8-bit bytes.
- For _n_u_m_2, enter the maximum physical block size
- in 8-bit bytes; _n_u_m_2 must be an exact multiple of
- _n_u_m_1.
-
- uu Undefined record format. For _n_u_m_1, enter the
- maximum record size, in 8-bit bytes.
-
- vv Variable length record format. For _n_u_m_1, enter
- the maximum logical record size in 8-bit bytes.
- For _n_u_m_2, enter the maximum physical block size
- in 8-bit bytes.
-
- vvbb Variable length blocked record format. For _n_u_m_1,
- enter the maximum logical record size in 8-bit
- bytes. For _n_u_m_2, enter the maximum physical
- block size in 8-bit bytes.
-
- vvbbss Variable length blocked, spanned record format.
- For _n_u_m_1, enter the maximum logical record size
- in 8-bit bytes. For _n_u_m_2, enter the maximum
- physical block size in 8-bit bytes.
-
- No _s_u_b_t_y_p_e is accepted for the iibbmm class record formats.
- _n_u_m_1 does not need to be smaller than _n_u_m_2.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- iibbmm[[.._t_y_p_e]][[..rreeccssiizzee==_n_u_m_1]][[..mmbbss==_n_u_m_2]]
-
- mmrr or ssddss Memory-resident and SDS-resident files. mmrr is a
- deferred implementation on IRIX systems. ssddss is not
- available on CRAY T3E systems or on IRIX systems.
-
- The mmrr and ssddss layers let you declare a byte-stream
- file, but the given file should reside in the specified
- medium as much as possible; this can improve
- performance.
-
- Enter one of the following for _t_y_p_e:
-
- _t_y_p_e LLooaadd SSppeecciiffiiccaattiioonn
-
- ssaavvee Default. Loads the file into the specified
- medium when the file is opened and writes the
- data back out when closed.
-
- ssccrr Scratch file. Does not attempt to load at
- open and discards data on close.
-
- Enter one of the following for _s_u_b_t_y_p_e:
-
- _s_u_b_t_y_p_e OOvveerrffllooww SSppeecciiffiiccaattiioonn
-
- oovvffll Default. Writes excess data that does not
- fit in the specified medium to the next lower
- layer.
-
- nnoovvffll If data does not fit in the specified medium,
- subsequent wwrriittee(1) operations fail.
-
- The mmrr and ssddss layers accept numeric fields. Generally,
- the numeric field specification represents best-efforts
- values. They are used for tuning purposes and usually
- do not cause errors if they are not satisfied precisely
- as specified. The fields are as follows:
-
- FFiieelldd VVaalluuee
-
- _n_u_m_1 Initial size of the memory or SDS allocation.
- Specified in 4096-byte blocks. Default is 0.
-
- _n_u_m_2 Maximum size of the memory or SDS allocation.
- Specified in 4096-byte blocks. Default is
- 46
- s -1.
-
- _n_u_m_3 Increment size of the memory or SDS allocation.
- Specified in 4096-byte blocks. This value is
- used when allocating additional memory or SDS
- space. The default is 256 for SDS files and 32
- for memory resident files.
-
- For example, if the SDS limit for a process is 1000
- blocks, and ssddss..ssccrr::11550000 is specified, an initial SDS
- allocation of 1000 blocks is used.
-
- Similarly, if ssddss::550000::1100000000::11000000 was specified, the
- first request for SDS space would result in the
- allocation of 500 blocks. If possible, this is
- allocated contiguously, but it is not guaranteed. If a
- file size exceeds 500 blocks, an attempt is made to
- increase the file by an increment of 1000 blocks. If
- this attempt fails, whatever can be allocated is given
- to the file. Assuming no other SDS use, this is 500
- blocks. At this point, the file assumes an overflow
- status.
-
- When using memory-resident files, you must ensure that
- not too much data is written to the file without
- limiting its size. Unrestrained and unmanaged growth of
- such a file can cause heap fragmentation and program
- abort. If this growth has used all available memory,
- the error message processor may be unable to issue a
- message. Therefore, such an abort may be difficult to
- diagnose and correct. It is recommended that the
- maximum memory size field be specified in all cases.
- (For example, mmrr..ssccrr::::1100000000 would limit such a file to
- approximately 5 Mwords of main memory.)
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- mmrr[[.._t_y_p_e[[.._s_u_b_t_y_p_e]]]][[..ssttaarrtt__ssiizzee==_n_u_m_1]] [[..mmaaxx__ssiizzee==_n_u_m_2]]
- [[..iinncc__ssiizzee==_n_u_m_3]]
-
- ssddss[[.._t_y_p_e[[.._s_u_b_t_y_p_e]]]][[..ssttaarrtt__ssiizzee==_n_u_m_1]] [[..mmaaxx__ssiizzee==_n_u_m_2]]
- [[..iinncc__ssiizzee==_n_u_m_3]]
-
- nnuullll Syntactic no-op.
-
- Available on IRIX systems.
-
- No optional fields are accepted. nnuullll may be specified
- where syntax demands a value, but no function is
- desired. This does not perform the same function as
- //ddeevv//nnuullll.
-
- nnoossvvee CDC NOS/VE record formats.
-
- Not available on IRIX systems.
-
- The following values are allowed for the _t_y_p_e and _n_u_m
- fields:
-
- _t_y_p_e VVaalluuee
-
- dd ANSI D format (variable-length) records. For
- _n_u_m_1, enter the maximum logical record size in
- 8-bit bytes. For _n_u_m_2, enter the maximum
- physical block size in 8-bit bytes.
-
- ff ANSI F fixed-length records. For _n_u_m_1, enter
- the logical record size in 8-bit bytes. For
- _n_u_m_2, enter the maximum physical block size in
- 8-bit bytes; _n_u_m_2 must be an exact multiple of
- _n_u_m_1.
-
- ss ANSI S format (segmented) records. For _n_u_m_1,
- enter the maximum logical record size. For
- _n_u_m_2, enter the maximum physical block size used
- in the lower-level layers.
-
- uu Undefined records. For _n_u_m_1, enter the maximum
- logical record size, in 8-bit bytes. For _n_u_m_2,
- enter the maximum physical block size in 8-bit
- bytes.
-
- vv NOS/VE V format records. The _n_u_m_1 field is not
- permitted. For _n_u_m_2, specify the size of the
- working buffer used in record blocking; if any
- logical records that are written exceed this
- size, a major performance penalty can result.
-
- You can specify the numeric parameters with this
- alternate keyword syntax (as noted previously, ..rreeccssiizzee
- may not be permitted for some _t_y_p_e_s):
-
- nnoossvvee[[.._t_y_p_e]][[..rreeccssiizzee==_n_u_m_1]][[..mmbbss==_n_u_m_2]]
-
- ssiittee Site layer. This option lets a site add custom I/O
- handlers for specific needs at load time. See the
- _A_p_p_l_i_c_a_t_i_o_n _P_r_o_g_r_a_m_m_e_r'_s _I/_O _G_u_i_d_e, publication SG-2168,
- for details.
-
- Available on IRIX systems.
-
- ssttddiinn, ssttddoouutt, or ssttddeerrrr
- Connects to specific file descriptors 0, 1, and 2,
- respectively. (See the ffdd class.)
-
- ssyysstteemm Generic system I/O layer. Selects bbmmxx, eerr9900, or ssyyssccaallll
- as appropriate.
-
- Available on IRIX systems.
-
- ssyyssccaallll System I/O call. Each I/O operation results in a
- corresponding system call.
-
- Available on IRIX systems.
-
- ttaappee Tape I/O. Each logical record requested is a physical
- tape block. This is the same as bbmmxx.
-
- Deferred implementation on IRIX systems.
-
- The _n_u_m_1 field represents the size of each buffer, in
- 4096-byte blocks. The _n_u_m_2 field represents the number
- of buffers.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- ttaappee[[..bbuuffssiizzee==_n_u_m_1]][[..nnuumm__bbuuffffeerrss==_n_u_m_2]]
-
- tteexxtt Special character terminated records.
-
- Available on IRIX systems.
-
- Enter one of the following for _t_y_p_e:
-
- _t_y_p_e FFoorrmmaatt
-
- nnll Newline-separated records
-
- eeooff Newline-separated records and the special
- character sequence ~~ee on a line by itself
- delimiting EOF
-
- 220055 CYBER 205-style text file
-
- ccttssss CTSS-style text format
-
- This class accepts _n_u_m specifications. If specified,
- _n_u_m_1 represents the decimal value of the ASCII character
- to use to delimit records; the default varies depending
- on the _t_y_p_e. For _n_u_m_2, enter the requested working
- buffer size in bytes.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- tteexxtt[[.._t_y_p_e]][[..nneewwlliinnee==_n_u_m_1]][[..bbuuffssiizzee==_n_u_m_2]]
-
- uusseerr User layer. This option allows a user to add custom I/O
- handlers for specific needs at load time. See the
- _A_p_p_l_i_c_a_t_i_o_n _P_r_o_g_r_a_m_m_e_r'_s _I/_O _G_u_i_d_e, publication SG-2168,
- for details.
-
- Available on IRIX systems.
-
- vvmmss Provides record blocking for common record types on
- VMS/MS operating systems.
-
- Deferred implementation on IRIX systems.
-
- For _t_y_p_e, enter one of the following record formats:
-
- _t_y_p_e FFoorrmmaatt
-
- ff Fixed-length records
-
- vv Variable length records
-
- ss Segmented variable records
-
- Each _t_y_p_e accepts the following _s_u_b_t_y_p_es to specify the
- blocking format within the record type:
-
- _s_u_b_t_y_p_e FFoorrmmaatt
-
- ttaappee ANSI standard record format. This _s_u_b_t_y_p_e
- should be used with labeled VAX/VMS tapes.
-
- bbbb Binary blocked format. This _s_u_b_t_y_p_e should be
- used with files that are to be fetched or
- disposed with a BBBB or TTBB format, or with
- unlabeled magnetic tapes. This _s_u_b_t_y_p_e requires
- an enclosing blocking; for example, vvmmss..ss..bbbb,,bbmmxx
- or vvmmss..ss..bbbb,,ccooss.
-
- ttrr Transparent format. This _s_u_b_t_y_p_e should be used
- with files that are transferred between the
- VAX/VMS system by using ffeettcchh or ddiissppoossee and the
- TTRR format. Any other method that precisely
- transfers the disk image, including all VMS
- control words, will also work. Note that ffttpp
- does not correctly transfer nontext,
- variable-length record files.
-
- This class accepts _n_u_m_1 and _n_u_m_2 fields; they have a
- similar meaning to iibbmm class. For _t_y_p_e ss, _n_u_m_1 is
- ignored. For _t_y_p_e ff, _n_u_m_2 need not be a multiple of
- _n_u_m_1.
-
- You can specify the numeric parameters with this
- alternate keyword syntax:
-
- vvmmss[[.._t_y_p_e]][[.._s_u_b_t_y_p_e]][[..rreeccssiizzee==_n_u_m_1]][[..mmbbss==_n_u_m_2]]
-
- EEXXAAMMPPLLEESS
- The following are example FFIO specifications.
-
- Example 1: The following example specifies FORTRAN 77/UNICOS Fortran
- blocking with a working buffer of 128,000 bytes to allow efficient
- creation of logical records up to 127,992 bytes:
-
- f77::128000
-
- Example 2: The following example specifies IBM VBS records with a
- block size of 16,384 bytes:
-
- ibm.vbs::16384
-
- Example 3: The following example specifies a memory-resident layer
- with an initial memory size of 100 4096-byte blocks:
-
- mr:100
-
- Example 4: The following example specifies VMS V records with a
- maximum record size of 1000 bytes:
-
- vms.v.tr:1000
-
- Example 5: The following example specifies the SS-resident layer that
- loads from disk on open and saves to disk on close, does not allow
- overflow, has an initial size of 10 4096-byte blocks in SDS, grows to
- a maximum size of 559 blocks in minimum increments of 37 blocks:
-
- sds.save.novfl:10:559:37
-
- See the _A_p_p_l_i_c_a_t_i_o_n _P_r_o_g_r_a_m_m_e_r'_s _I/_O _G_u_i_d_e, publication SG-2168, for
- more detailed information about FFIO specifications.
-
- NNOOTTEESS
- Some FFIO specification requirements are not obvious. For example,
- CYBER 205 R-type records must be requested with bbllxx..ccttssss,,tteexxtt..220055.
-
- The Fortran I/O library checks for conflicting attributes when file
- name and unit attributes are both present during OOPPEENN processing for a
- Fortran unit. The existence of an assign attribute for both the file
- and the unit results in an error condition.
-
- SSEEEE AALLSSOO
- _A_p_p_l_i_c_a_t_i_o_n _P_r_o_g_r_a_m_m_e_r'_s _I/_O _G_u_i_d_e, publication SG-2168
-
- aaccppttbbaadd(3F), aassssiiggnn(3F), ffffooppeenn(3C), ooppeennmmss(3F), ooppeennddrr (see
- ooppeennmmss(3F)), sskkiippbbaadd(3F)
-
- ddff(1), llnn(1), sseettff(1), ttppmmnntt(1), wwrriittee(1)
-
- aassggccmmdd(1), aassssiiggnn(1)
-
- iiaalllloocc(2), ooppeenn(2)
-
- SSDDSSAALLLLOOCC(3F)
-
- _A_p_p_l_i_c_a_t_i_o_n _P_r_o_g_r_a_m_m_e_r'_s _L_i_b_r_a_r_y _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, publication
- SR-2165, for the printed version of this man page.
-